"""
 1.socket创建一个套接字
 2.bind绑定ip和port
 3.listen使套接字设置为被动模式
 4.accept等待客户端的链接
 5.recv/send接收并发送数据   
    
"""
import socket
#1.socket创建一个套接字
#AF_INET: IPv4地址,SOCK_STREAM: TCP协议
tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print(tcp_server_socket)

#2.bind绑定ip和port
#如果ip是空字符串，代表所有本机网卡的ip地址
#tcp_server_socket.bind(('127.0.0.1',7788))
tcp_server_socket.bind(('127.0.0.1',7788))

#3.listen使套接字设置为被动模式
#参数：等待客户端连接的最大数量，旨在windows系统里生效，其他系统不限制
#此时，socket套接字对象由主动连接模式变为被动模式，等待客户端接入
tcp_server_socket.listen(128)

print("服务器启动，等待客户端连接...")
#4.accept等待客户端的连接（阻塞当前线程，有新客户接入时才释放阻塞）
# add = tcp_server_socket.accept()
tcp_client,client_addr = tcp_server_socket.accept()#解包
print("有新的客户来啦!:",client_addr)
# print(add,type(add))

#5.recv/send接收发送数据（会一直阻塞等待）
client_data = tcp_client.recv(1024)
print("客户端发来数据:",client_data.decode("gbk"))

#服务器回复数据
tcp_client.send("消息已收到！".encode('utf-8'))

#6关闭服务器
tcp_server_socket.close()
